﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AIPASoft.Interfaces;
using AIPASoft.Interfaces.Security;

namespace AIPASoft.Interfaces.BusinessDomain
{
    public interface IDomainManager 
    { 

        List<IPlugin> Plugins { get; set; }

        bool LoadAllPlugins();

        T QueryDomain<T>(T domainInterface);

        void StartInitialization();
        void FinishInitialization();

        ILogProvider LogProviderInstance { get; set; }
        ISecurityLibrary SecurityLibraryInstance { get; set; }
        IUserRealm CurrentUser { get; set; }
        IApplicationManager ApplicationManagerInstance { get; set; }
    }
}
